<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>

</body>

</html>

<script>
  /* JS 是 「动态」 `弱类型` 语言：
    JS 是 「动态」 `弱类型` 语言：
      能 介绍一下， 动态 是什么意思？
        面试官，给您说：
          首先，JS语言的设计思想： 
            JS对新手比较友好，即 JS执行的时候，想方设法不报错。
  
        面试官问，为什么/JS如何做到 「想方设法不报错」？
          -> 答：这就要说到，JS是 「动态语言」
            -> 比如说，给您举个栗子： `数字+字符串`，加号左右两侧是不同的数据类型，正常来说，两数数据类型，不能 做 任何 计算。
              但 JS在执行 `数字+字符串`，会 动态地，将 数字 转成 `字符串数字`，从而 实现出「字符串拼接」。
                上数据，动态地转换，又被称为「隐式转换」。
  
       
  
    
    面试时，回答问题的思路：
      1）先总后分
      2）举例
  */


  /* 自增自减运算符：
  
    num++
      先返回num的值，再将num的值自增1；
    案例：
      var num = 1;
      console.log(num++); // 1
      console.log(num); // 2
  
  
    ++num
      先自增1，再将结果值返回。
  
    案例：
      var num = 1;
      console.log(++num); // 2
      console.log(num); // 2
  
  
    --num:
      先自减1，再返回值。
  
    num--:
      先返回值，再自减1；
  */


  /* 数字：
    NaN:
      什么意思：  not a  number
      作用： 若数字执行了 非法计算，返回值是 NaN。
      解释：不是数字，但 `typeof NaN` 是 number； NaN 不等于任何数据，包括其本身。
  
      为什么 NaN 还不等于其本身？
        举例： 
          `123 * 'sdf'`  ->  NaN
          `111 * 'abc'`  ->  NaN
          两个NaN 是不同的计算产生的，那么 由此可推，NaN 不应 和自己相等。
  
  
    
  
  
    Infinity: 无穷大
      什么意思：举例 `99 ** 9999999` 则会显示 `Infinity`，
      为什么  `99 ** 9999999` 就显示 `Infinity`？
        -> 因为 JS 中，使用 固定大小的内存，去表示 数字；只要 数字的值，超过了 固定大小的内存，则显示 `Infinity`。
  
  
    如何判断一个变量，是不是 `NaN`
      Number.isNaN(变量); // 返回值为 true，则表示 变量是 NaN
  
  
    如何判断一个变量，是不是 `有限大`
        Number.isFinite(变量); // 返回值为 true，则表示 变量是 有限大
  
  
    如何判断一个变量，是不是 `整数`
        Number.isInteger(变量)
  */


  /* 逻辑运算符：
    与：  `&&`    `and`
      写法：`表达式A && 表达式B && 表达式C ...`
      执行逻辑：
        当所有的 表达式都是 true(真)，则「整体表达式」返回值是 true; 
        只要有一个表达式是 false(假)，则「整体表达式」返回值是 false; 
      现实案例：
        咱班都是 成年人吗？
  
  
  
    或：  `||`    `or`
      写法：`表达式A || 表达式B || 表达式C ...`
      执行逻辑：
        当所有的 表达式都是 false(假)，则「整体表达式」返回值是 false; 
        只要有一个表达式是 true(真)，则「整体表达式」返回值是 true; 
      现实案例：
        咱班有 未成年吗？
          只要有一个，就返回 true，即有未成年人。
  
  
    非：   `!`    `not`
      写法：`!表达式`
      执行逻辑：
        若 表达式的返回值是「假」，则 整体表达式，返回值是 true。
        
  
    讨论 JS 中何为「真」、「假」：
      假，只有五种：null / undefined / '' / NaN / 0
        上述五种，被称为「假」； 其余的数据，都是「真」。
  
  
    案例：
      console.log(!''); // true
      console.log(!0); // true
      console.log(!null); // true
      console.log(!NaN); // true
      console.log(!undefined); // true
      console.log(!1111); // false
      console.log(!!'你好'); // true
  */


  /* 数据类型间的转换：
    转数字：
      Number(字符串)
      Number.parseInt(字符串) // 自左向右解析，直到不能解析为止
      Number.parseFloat(字符串) // 自左向右解析，直到不能解析为止
      +字符串数字; // `+` 即变成了 正号，所以将 字符串数字 隐式转换


    转字符串：
      String(其他数据类型)
      
      var num = 123.333;
      num.toFixed(保留小数点后几位) // 返回值是 字符串数字
      
      其他变量.toString(); // 
      num.toString(进制)
      
      数字 + 字符串; // 加号，左右两侧，只要一个是 字符串，则就称为了 字符串拼接
  
  
  转布尔值：
    Boolean(其他数据类型); // 只有 五种「假」，会被转成 false，其他都被转成 true
  
    !!其他数据类型  // 只有 五种「假」，会被转成 false，其他都被转成 true

  */




</script>